<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script src="https://unpkg.com/vue@2/dist/vue.js"></script>
    <script src="https://unpkg.com/vue-router@3/dist/vue-router.js"></script>

    <div id="app">
      <h1>Hello App!</h1>
      <p>
        <!--使用 router-link 组件进行导航 -->
        <!--通过传递 `to` 来指定链接 -->
        <!--`<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>` 标签-->
        <router-link to="/">Go to Home</router-link>
        <router-link to="/about">Go to About</router-link>
        <router-link to="/user/foo">Go to User</router-link>
        <router-link to="/user/foo/profile">/user/foo/profile</router-link>
        <router-link to="/user/foo/posts">/user/foo/posts</router-link>
      </p>
      <!-- 路由出口 -->
      <!-- 路由匹配到的组件将渲染在这里 -->
      <router-view></router-view>
    </div>

    <script>
      // 1. 定义路由组件.
      const Home = { template: "<div>Home</div>" };
      const About = { template: "<div>About</div>" };
      const User = {
        // template: "<div>User {{$route.params.id}}</div>",
        template: `
        <div class="user">
            <h2>User {{$route.params.id}}</h2>
            <router-view></router-view>
            </div>
        `,
      };
      const UserHome = { template: "<div>Home</div>" };
      const UserProfile = { template: "<div>Profile</div>" };
      const UserPosts = { template: "<div>Posts</div>" };

      // 2. 定义一些路由
      // 每个路由都需要映射到一个组件。
      // 我们后面再讨论嵌套路由。
      const routes = [
        { path: "/", component: Home },
        { path: "/about", component: About },
        {
          path: "/user/:id",
          component: User,
          children: [
            { path: "", component: UserHome },
            { path: "profile", component: UserProfile },
            { path: "posts", component: UserPosts },
          ],
        },
      ];

      // 3. 创建路由实例并传递 `routes` 配置
      // 你可以在这里输入更多的配置，但我们在这里
      // 暂时保持简单
      const router = new VueRouter({
        // 4. 内部提供了 history 模式的实现。为了简单起见，我们在这里使用 hash 模式。
        // history: VueRouter.createWebHashHistory(),
        routes, // `routes: routes` 的缩写
      });

      //   5 创建并挂载根实例
      const app = new Vue({
        router,
      }).$mount("#app");
    </script>
  </body>
</html>
